package com.beichuan_travel.service;

import com.beichuan_travel.model.dto.PlanDTO;
import com.beichuan_travel.model.vo.PlanVO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

public interface PlanServcie {

    /**
    * @Description: 展示用户所有创建的行程
    * @Param: uid 用户id
    * @return: 以日期为键返回用户的每日行程
    * @Author: Sora
    * @Date: 2021/9/20
    */
    Map<String, List<PlanVO>> list(int uid);

    /**
     * @Description: 根据时间查询行程
     * @Param: uid, 用户id
     * @Param: date，需要查询的日期，格式为 2021-09-20
     * @return: 返回当天全部行程
     * @Author: Sora
     * @Date: 2021/9/20
     */
    List<PlanVO> queryTripPerDay(Integer uid, String date);

    /**
    * @Description: 添加行程
    * @Param: tripDTO, 需要添加的行程
    * @Param: uid， 用户id
    * @return: 成功返回1，失败返回0
    * @Author: Sora
    * @Date: 2021/9/20
    */
    int addTrip(PlanDTO planDTO, MultipartFile img, Integer uid);

    /**
    * @Description: 将用户创建的行程逻辑删除
    * @Param: id，行程的id
    * @return: 成功返回1，失败返回0
    * @Author: Sora
    * @Date: 2021/9/20
    */
    int delTrip(Integer id);

    /**
    * @Description: 获得行程类型映射
    * @Param:
    * @return: 存在返回 true， 不存在返回 false
    * @Author: Sora
    * @Date: 2021/9/20
    */
    Map<Integer, String> typeList();

    /**
    * @Description: 用于检验 type 是否存在于 trip_type 映射表中
    * @Param: type 需要校验的参数
    * @return:
    * @Author: Sora
    * @Date: 2021/9/20
    */
    boolean checkMaxType(int type);

}
